#include <stdio.h>
#include <string.h>
// 函数名和&函数名 都代表的是一个函数的地址
char *fun1(char *p)
{
    printf("fun1%s\n", p);
    return p;
}
char *fun2(char *p)
{
    printf("fun2%s\n", p);
    return p;
}
char *fun3(char *p)
{
    printf("fun3%s\n", p);
    return p;
}
int main()
{
    printf("fun1=%x,&fun1=%x\n",fun1,&fun1);
    printf("fun2=%x,&fun2=%x\n",fun2,&fun2);
    printf("fun3=%x,&fun3=%x\n",fun3,&fun3);
    char *(*pf[3])(char *p);
    pf[0] = fun1;  // 可以直接用函数名
    pf[1] = &fun2; // 可以用函数名加上取地址符
    pf[2] = &fun3;
    pf[0]("fun1");
    pf[1]("fun2");
    pf[2]("fun3");
    return 0;
}